package cn.anecansaitin.whimsy.common.capabilities.battle;

import net.minecraft.client.Camera;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.LivingEntity;
import org.jetbrains.annotations.Nullable;

import java.util.function.Consumer;

public interface IOWController extends IBattleController{
    /**
     * 在实体被伤害之前触发
     * @param entity 被伤害的实体
     * @param source 伤害来源
     * @param amount 伤害量
     */
    default float hurt(LivingEntity entity, DamageSource source, float amount) {
        return expandedHP().hurt(amount);
    }

    /**
     * 在实体被治疗之后触发
     * @param entity 被治疗的实体
     * @param source 治疗来源
     * @param amount 治疗量
     */
    default void heal(LivingEntity entity, @Nullable LivingEntity source , float amount) {
        expandedHP().heal(amount);
    }

    /**
     * 获取拓展血量，优先扣除拓展血量，然后扣除实体血量
     */
    ExpandedHP expandedHP();

    /**
     * 用于修改客户端的相机参数
     */
    @Nullable
    default Consumer<Camera> getCameraModifier() {
        return null;
    }

    /**
     * @return 是否需要修改相机
     */
    default boolean modifyCamera() {
        return false;
    }
}
